#include "log.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "vencoder.h"
#include <time.h>


int main()
{
	VideoStreamInfo* pVideoInfo;
	pVideoInfo->eCodecFormat = VIDEO_CODEC_FORMAT_H264;
	VConfig* pVconfig;
	VideoStreamDataInfo* pDataInfo;							//码流数据信息，包括地址、长度、时间戳、边界信息等；
	int nRequireSize;										//请求 Buffer 的大小，以字节为单位；
	char** ppBuf;											//输出参数，码流 Buffer 起始地址，等于 NULL 表示失败；
	int* pBufSize;											//输出参数，码流 Buffer ppBuf 的大小；
	char** ppRingBuf;										//输出参数，第二块 Buffer 的起始地址，等于 NULL 表示没有；
	int* pRingBufSize;										//第二块 Buffer ppRingBuf 的大小；
	int nStreamBufIndex;									//对于蓝光 MVC 等 3D 视频，解码器需要处理两路码流，nStreamBufIndex 指定从第几路视频码流 Buffer 获取 Buffer，0 表示第 0 路（MVC 主码流）、1 表示第 1 路（MVC 从码流）。	
	int bEndOfStream;										//是否码流结束，等于 1 表示所有码流数据都已经传送到 Sbm；
	int bDropBFrameIfDelay;									//码流的时间戳（PTS）比当前时间大时，是否丢弃 B帧，等于 0 表示不丢弃，等于 1 表示丢弃 B 帧；
	int64_t nCurrentTimeUs;									//当前时间，用于比较码流是否过时；


	VideoDecoder* pDecoder = CreateVideoDecoder();			//创建一个视频解码器
	/*
	        //* open Ve driver.
        gVeDriverFd = open("/dev/cedar_dev", O_RDWR);
	*/
	InitializeVideoDecoder(pDecoder,pVideoInfo,pVconfig);					//初始化视频解码器
	RequestVideoStreamBuffer(pDecoder,nRequireSize,ppBuf,pBufSize,ppRingBuf,pRingBufSize,nStreamBufIndex);							//向解码器请求存放码流 Buffer，用于存放数据
	SubmitVideoStreamData(pDecoder,pDataInfo,nStreamBufIndex);								//向解码器提交码流数据
	DecodeVideoStream(pDecoder,bEndOfStream,bDropBFrameIfDelay,nCurrentTimeUs);				//解码一帧图像，解码库会对码流 Buffer 中的码流进行解码							//解码一帧图像，解码库会对码流 Buffer 中的码流进行解码
	return 0;
}
